package cn.com.headfree.workflowant.dao;

import java.util.List;

import com.gta.edu.sdk.base.dao.IBaseDao;
import com.gta.edu.sdk.common.dto.Page;

import cn.com.headfree.entity.TBusinessWorkflowBind;
import cn.com.headfree.entity.TMouldInfo;
import cn.com.headfree.entity.TOrgDept;
import cn.com.headfree.entity.TSysDictionaryInfo;
import cn.com.headfree.entity.isc.User;
import cn.com.headfree.vo.workflow.ProcessListVo;
import cn.com.headfree.workflowant.dto.ApproveWorkFlowDto;
import cn.com.headfree.workflowant.dto.BusinessWorkFlowDto;
import cn.com.headfree.workflowant.dto.WorkFlowCount;

/**  
 * @Title  IWorkFlowAntDao.java   
 * @Package cn.com.headfree.workflowant.dao   
 * @Description 流程dao
 * @author yangwang 
 * @date  2020年7月29日 下午5:38:06   
 */
public interface IWorkFlowAntDao extends IBaseDao<ApproveWorkFlowDto> {
	
	/**
	 * 获取某个单位下的所有单位
	 * @author yangwang
	 * @return  List<TOrgDept>
	 *  */
	List<TOrgDept> getWorkFlowUnits();
	
	/**
	 * 获取所有业务类型
	 * @author yangwang
	 * @param ids
	 * @return  List<TMouldInfo>
	 *  */
	List<TMouldInfo> getMouldInfoList(String ids);
	
	/**
	 * 根据id获取业务类型
	 * @author yangwang
	 * @param id
	 * @return  TMouldInfo
	 *  */
	TMouldInfo getMouldInfoById(String id);
	
	/**
	 * 根据单位和流程获取流程绑定信息
	 * @author yangwang
	 * @param orgId 单位id
	 * @param flowId 流程id
	 * @return  TBusinessWorkflowBind
	 *  */
	List<TBusinessWorkflowBind> getWorkflowBindByOrgAndFlowId(String orgId,String flowId);
	
	/**
	 * 获取流程绑定
	 * @author yangwang
	 * @param bind 绑定信息
	 * @return TBusinessWorkflowBind
	 *  */
	TBusinessWorkflowBind getWorkFlowBind(TBusinessWorkflowBind bind);
	
	/**
	 * 插入流程绑定
	 * @author yangwang
	 * @param bind 绑定信息
	 *  */
	void insertWorkFlowBind(TBusinessWorkflowBind bind);
	
	/**
	 * 更新流程绑定
	 * @author yangwang
	 * @param bind 绑定信息
	 *  */
	void updateWorkFlowBind(TBusinessWorkflowBind bind);
	
	/**
	 * 根据erpno获取部门信息
	 * @author yangwang
	 * @param erpNo erp编码
	 * @param List<TOrgDept>
	 *  */
	List<TOrgDept> getDeptByErpNo(String erpNo);
	
	/**
	 * 根据表名和业务id获取业务相关信息
	 * @author yangwang
	 * @param tableName 表名
	 * @param businessId 业务id
	 * @param ApproveWorkFlowDto
	 *  */
	ApproveWorkFlowDto getBusinessDataByParams(String tableName,String businessId);
	
	/**
	 * 获取审核进度列表数据
	 * @author yangwang
	 * @param page 分页
	 * @param process 进度数据
	 *  */
	void approveProcessPage(Page<ProcessListVo> page,ProcessListVo process);
	
	/**
	 * 更新业务流程状态
	 * @author yangwang
	 * @param businessDto
	 *  */
	void updateBusinessWorkFlowStatus(BusinessWorkFlowDto businessDto);
	
	/**
	 * 更新业务是否有效数据
	 * @author yangwang
	 * @param businessDto
	 *  */
	void updateBusinessIsValid(BusinessWorkFlowDto businessDto);
	
	/**
	 * 获取业务流程统计
	 * @author yangwang
	 * @param tableName 表名
	 * @param erpNo erp编码
	 * @param status (0-待办,1-已办,-1-全部)
	 * @param businessDto
	 *  */
	WorkFlowCount getBusinessFlowCount(String tableName,ProcessListVo process);
	
	/**
	 * 获取字典列表
	 * @param value
	 * @return List<TSysDictionaryInfo>
	 *  */
	List<TSysDictionaryInfo> getDictionarys(String value);
	
	/**
	 * 删除业务
	 * @param user 统一权限用户
	 * @param process
	 *  */
	void deleteBusiness(User user,ProcessListVo process);

}
